function upFixed (num, fix) {
  // num为原数字，fix是保留的小数位数
  let result = '0'
  if (Number(num) && fix > 0) { // 简单的做个判断
    fix = +fix || 2
    num = num + ''
    if (/e/.test(num)) { // 如果是包含e字符的数字直接返回
      result = num
    } else if (!/\./.test(num)) { // 如果没有小数点
      result = num + `.${Array(fix + 1).join('0')}`
    } else { // 如果有小数点
      num = num + `${Array(fix + 1).join('0')}`
      const reg = new RegExp(`-?\\d*\\.\\d{0,${fix}}`)
      const floorStr = reg.exec(num)[0]
      if (+floorStr >= +num) {
        result = floorStr
      } else {
        const floorNumber = +floorStr + +`0.${Array(fix).join('0')}1`
        const point = /\./.test(floorNumber + '') ? '' : '.'
        const floorStr2 = floorNumber + point + `${Array(fix + 1).join('0')}`
        result = reg.exec(floorStr2)[0]
      }
    }
  }
  return result
}

const randomStr20 = (token) => {
  const data = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z",]
  let result = ""
  for (let i = 0; i < 20; i++) {
    const r = Math.floor(Math.random() * 62) // 取得0-62间的随机数，目的是以此当下标取数组data里的值！
    result += data[r] // 输出20次随机数的同时，让rrr加20次，就是20位的随机字符串了。
  }
  return result
}

/**
 * 遍历列的所有内容，获取最宽一列的宽度
 * @param arr
 * ['[组合] 内部商品组合', '[分类] 内部商品组合分类', '名称/年份']
 */
const getMaxLength = function (arr) {
  return arr.reduce((acc, item) => {
    if (item) {
      const calcLen = getTextWidth(item)
      if (acc < calcLen) {
        acc = calcLen
      }
    }
    return acc
  }, 0)
}

/**
 * 使用span标签包裹内容，然后计算span的宽度 width： px
 * @param valArr
 */
function getTextWidth (str) {
  let width = 0
  const html = document.createElement("span")
  html.innerText = str
  html.className = "getTextWidth"
  document.querySelector("body").appendChild(html)
  width = document.querySelector(".getTextWidth").offsetWidth
  document.querySelector(".getTextWidth").remove()
  return width
}

// 计算y轴刻度值
function yAxisNumber (list) {
  const res = []
  list = list.filter(i => i != null)
  const min = Math.min.apply(null, list)
  const max = Math.max.apply(null, list)
  const n = Number(upFixed((max - min) / 4, 2))
  if (!n) {
    return [-1, 1, 1]
  }
  res[2] = Math.ceil(n)
  res[0] = Math.floor((min - n / 2).toFixed(2))
  res[1] = Math.ceil((max + n / 2).toFixed(2))
  console.log(res)
  return res
}

// 复制字符串
function copyStr(msg) {
  let txa = document.createElement('textarea')
  txa.value = msg
  document.body.appendChild(txa)
  txa.select()
  let res = document.execCommand('copy')
  document.body.removeChild(txa)
  console.log('copy success')
  return res
}

export {
  yAxisNumber,
  randomStr20,
  getMaxLength,
  copyStr
}